home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / answers / comp / object-faq / part2 < prev    next >
Text File  |  1993-12-15  |  60KB  |  1,325 lines

  1. Newsgroups: comp.object,comp.answers,news.answers
  2. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!nic.hookup.net!europa.eng.gtefsd.com!howland.reston.ans.net!vixen.cso.uiuc.edu!uchinews!news
  3. From: Bob Hathaway <rjh@geodesic.com>
  4. Subject: Comp.Object FAQ Version 1.0.5 (12-13) Part 2/8
  5. Message-ID: <1993Dec14.044309.18084@midway.uchicago.edu>
  6. Followup-To: comp.object
  7. Summary: Frequently Asked Questions (FAQ) List and Available Systems For Object-Oriented Technology
  8. Sender: news@uchinews.uchicago.edu (News System)
  9. Organization: Geodesic Systems
  10. Date: Tue, 14 Dec 1993 04:43:09 GMT
  11. Approved: news-answers-request@MIT.Edu
  12. Lines: 1310
  13. Xref: senator-bedfellow.mit.edu comp.object:13849 comp.answers:2990 news.answers:15748
  14.  
  15. Archive-name: object-faq/part2
  16. Last-Modified: 12/13/93
  17. Version: 1.0.5
  18.  
  19. "Poly" means "many" and "morph" means "form".  The homograph polymorphism has
  20. many uses in the sciences, all referring to objects that can take on or assume
  21. many different forms.  Computer Science refers to Strachey's original
  22. definitions of polymorphism, as divided into two major forms, parametric and
  23. ad-hoc.  Cardelli and Wegner followup with another classification scheme,
  24. adding inclusion polymorphism for subtyping and inheritance.
  25.  
  26.  
  27. > Strachey's Original Definition [Strachey 67]:
  28.  
  29. "Parametric polymorphism is obtained when a function works uniformly on a range
  30. of types; these types normally exhibit some common structure.  Ad-hoc
  31. polymorphism is obtained when a function works, or appears to work, on several
  32. different types (which may not exhibit a common structure) and may behave in
  33. unrelated ways for each type."  
  34.  
  35. Parametric polymorphism is also referred to as "true" polymorphism, whereas
  36. ad-hoc polymorphism isn't (apparent polymorphism).
  37.  
  38.  
  39. > Cardelli and Wegner's Definition [Cardelli 85]:
  40.  
  41. C+W refine Strachey's definition by adding "inclusion polymorphism" to model
  42. subtypes and subclasses (inheritance).  Strachey's parametric polymorphism is
  43. divided into parametric and inclusion polymorphism, which are closely related,
  44. but separated to draw a clear distinction between the two forms, which are then
  45. joined as specializations of the new "Universal" polymorphism.
  46.  
  47.                                  |-- parametric
  48.                  |-- universal --|
  49.                  |               |-- inclusion
  50.   polymorphism --|
  51.                  |               |-- overloading
  52.                  |-- ad hoc    --|
  53.                                  |-- coercion
  54.  
  55. Polymorphic Languages: some values and variables may have more than one type.
  56.  
  57. Polymorphic Functions: functions whose operands (actual parameters) can
  58.   have more than one type.  [...] If we consider a generic function to be
  59.   a value, it has many functional types and is therefore polymorphic.
  60.  
  61. Polymorphic Types: types whose operations are applicable to operands of more
  62.   than one type.
  63.  
  64. Parametric Polymorphism: a polymorphic function has an implicit or explicit
  65.   type parameter which determines the type of the argument for each
  66.   application of that function.
  67.  
  68. Inclusion Polymorphism: an object can be viewed as belonging to many different
  69.   classes that need not be disjoint; that is, there may be inclusion of
  70.   classes.
  71.  
  72. The two forms of "Universal Polymorphism", parametric and inclusion are closely
  73. related, but are distinct enough in implementation to justify separate
  74. classifications.
  75.  
  76. Parametric polymorphism is referred to as generics.  Generics can be syntactic,
  77. where each instantiation creates a specialized version of the code allowing
  78. fast running execution, but in a "true polymorphic system", only a single
  79. implementation is used.
  80.  
  81. On inheritance is subtype polymorphism:
  82. "Subtyping on record types corresponds to the concept of inheritance
  83. (subclass) in languages, especially if records are allowed to have functional
  84. components."
  85.  
  86. Author's Notes:
  87. Implicit parametric polymorphism can be implemented with type inferencing
  88. schemes [Aho 85].  ML is prototypical in providing this facility.
  89.  
  90. Inclusion polymorphism is common and is found in languages such as Simula,
  91. Ada-9x, C++, CLOS, Eiffel and etc. (subclass polymorphism).  Smalltalk also
  92. uses inclusion polymorphism; its used in declaring classes, and subclass
  93. polymorphism is used in practice but not enforced.  For inheritance, inclusion
  94. polymorphism specifies an instance of a subclass can appear wherever an
  95. instance of a superclass is required.  For subtyping (subtype polymorphism),
  96. the same applies because all operations required by the supertype are present
  97. in the subtype (subtype is subset of supertype).  Cardelli and Wegner view
  98. classes as sets of objects (resulting in subtype objects are a subset of
  99. supertype objects, or an extentional view), as contrasted with a feature based
  100. (intentional) approach (where subtypes are supersets of (contain) supertypes).
  101. MI provides an interesting example here, as it is set intersection with an
  102. extensional view and set union with an intentional view.  Details are left as
  103. an exercise for the reader.
  104.  
  105. Ada generics and C++ templates provide explicit syntactic generics.  While
  106. Ada may infer some actual generic parameters (operations) and C++ doesn't
  107. require explicit instantiation of its template functions, formal generic
  108. parameters must still be declared and many bodies are generated.
  109.  
  110. Inclusion polymorphism can refer to subtyping, or having at least as much or
  111. more than required.  Since derived classes can inherit structure and behavior
  112. from base classes, such inheritance is an example of inclusion polymorphism
  113. with respect to representation (subclassing).  An example of inclusion
  114. polymorphism with respect to assignment (and initialization, or replacement if
  115. viewed in an almost symbolic way) occurs when object types may be specified and
  116. assignment is based on actual object membership in that type (often of the CLOS
  117. is-a-member-of form in OO).  Emerald provides another example of an object-
  118. oriented language using inclusion polymorphism with respect to replacement;
  119. however, inclusion is with respect to subtyping only with abstract types
  120. ("bounded quantification" by C+W.  C+W's parameters are subtype polymorphic
  121. but lose the inherent type).  Any object possessing all required operations is
  122. acceptable and no inheritance relation is required (subtype polymorphism).
  123. They refer to this as "best-fitting" types [Black 86].  The original Trellis/
  124. Owl also had such a facility but with two separate inheritance hierarchies,
  125. although it was abandoned in favor of a single class-based approach for
  126. simplicity.  See also section 2.7.
  127.  
  128. [As inclusion polymorphism covers both subtype and subclass polymorphism,
  129.  perhaps IP could be further divided in C+W's above classification.]
  130.  
  131.  
  132. > Booch's Definition [Booch 91, p. 517]:
  133.  
  134. polymorphism  A concept in type theory, according to which a name (such as a
  135. variable declaration) may denote objects of many different classes that are
  136. related by some common superclass; thus, any object denoted by this name is
  137. able to respond to some common set of operations in different ways.
  138.  
  139. Booch also has several sections devoted to polymorphism.
  140.  
  141. [The author notes Booch's definition above is clearly in the context of
  142.  conventional, classical OO and subclass polymorphism.]
  143.  
  144.  
  145. > Meyer's Definition [Meyer 88, sect. 10.1.5 Polymorphism]:
  146.  
  147. "Polymorphism" means the ability to take several forms.  In object-oriented
  148. programming, this refers to the ability of an entity to refer at run-time to
  149. instances of various classes.  In a typed environment such as Eiffel, this is
  150. constrained by inheritance: ...
  151.  
  152. [The Author notes Meyer has a following section 10.1.7 on Static Type,
  153.  dynamic type, which is relevant, but claims "... there is no way the type
  154.  of an object can ever change.  Only a reference can be polymorphic: ...".
  155.  Meyer is clear between the concept and the Eiffel realization in his
  156.  polymorphism definition above, but here neglects the "becomes" facility
  157.  as found in several dynamically typed OO languages such as Actors, CLOS,
  158.  Self and Smalltalk, which allows an object (and not just a reference) to
  159.  change its class.]
  160.  
  161.  
  162. > Stroustrup's Definition [Stroustrup 90, p. 209]:
  163.  
  164. The use of derived classes and virtual functions is often called "object-
  165. oriented programming".  Furthermore, the ability to call a variety of
  166. functions using exactly the same interface - as is provided by virtual
  167. functions - is sometimes called "polymorphism".
  168.  
  169. [The Author notes this is a functional view of polymorphism (as provided in
  170. C++).  [Stroustrup 91, p. 136] has an example of polymorphism with void *'s,
  171. but a newer template function is incomparably preferable, as implied in
  172. [Stroustrup 90, ch 14]]
  173.  
  174.  
  175. Rumbaugh's Definition [Rumbaugh 91, p. 2]:
  176.  
  177. "Polymorphism" means that the same operation may behave differently on
  178. different classes.
  179.  
  180.  
  181. 2.2)  What Does Polymorphism Boil Down To In OO Programming Languages?
  182. ----------------------------------------------------------------------
  183.  
  184. In C++, virtual functions provide polymorphism.  This is because a polymorphic
  185. object (pointer or reference (or such parameter)) is assignment compatible with
  186. any object of a derived class.  Is this polymorphism in itself?  Objects
  187. can take on objects of different forms (the derived classes), but of what use
  188. is it?  To make any difference, the differing forms must have some effect.  In
  189. dynamically typed languages, polymorphic objects are passed messages and will
  190. respond in whatever way the object has defined (usually starting from its most
  191. derived class and working its way up).  But for static objects, a virtual
  192. function is invoked.  This is the stored method from the derived class that
  193. overrode the virtual method from its base class, providing specialized behavior
  194. for the polymorphic object; and hence, polymorphism.  This common pure
  195. statically typed example is, of course, an example of inclusion polymorphism,
  196. subclass polymorphism to be more specific (see section 2.1).  Pure statically
  197. typed subtype polymorphism, as provided in Emerald, can be implemented
  198. similarly [Black 86].
  199.  
  200.  
  201. 2.3)  What Is Dynamic Binding?
  202. ------------------------------
  203.  
  204. Dynamic binding has two forms, static and dynamic.  Statically-typed dynamic
  205. binding is found in languages such as C++ (virtual functions) and Eiffel
  206. (redefinition).  It is not known which function will be called for a virtual
  207. function at run-time because a derived class may override the function, in
  208. which case the overriding function must be called.  Statically determining all
  209. possibilities of usage is undecidable.  When the complete program is compiled,
  210. all such functions are resolved (statically) for actual objects. Formal object
  211. usage must have a consistent way of accessing these functions, as achieved thru
  212. vtables of function pointers in the actual objects (C++) or equivalent,
  213. providing statically-typed dynamic binding (this is really just defining simple
  214. function pointers with static typechecking in the base class, and filling them
  215. in in the derived class, along with offsets to reset the receiver).
  216.  
  217. The run-time selection of methods is another case of dynamic binding, meaning
  218. lookup is performed (bound) at run-time (dynamically).  This is often desired
  219. and even required in many applications including databases, distributed
  220. programming and user interaction (e.g. GUIs).  Examples can be found in
  221. [Garfinkel 93, p80] and [Cox 91, pp 64-67].  To extend Garfinkels example with
  222. multiple-polymorphism, a cut operation in an Edit submenu may pass the cut
  223. operation (along with parameters) to any object on the desktop, each of which
  224. handles the message in its own way (OO).  If an (application) object can cut
  225. many kinds of objects such as text and graphical objects, multiple-polymorphism
  226. comes into play, as many overloaded cut methods, one per type of object to be
  227. cut, are available in the receiving object, the particular method being
  228. selected based on the actual type of object being cut (which in the GUI case is
  229. not available until run-time).
  230.  
  231. Again, various optimizations exist for dynamic lookup to increase efficiency
  232. (such as found in [Agrawal 91] and [Chambers 92]).
  233.  
  234. Dynamic binding allows new objects and code to be interfaced with or added to
  235. a system without affecting existing code and eliminates switch statements.
  236. This removes the spread of knowledge of specific classes throughout a system,
  237. as each object knows what operation to support.  It also allows a reduction in
  238. program complexity by replacing a nested construct (switch statement) with a
  239. simple call.  It also allows small packages of behavior, improving coherence
  240. and loose coupling.  Another benefit is that code complexity increases not
  241. linearly but exponentially with lines of code, so that packaging code into
  242. methods reduces program complexity considerably, even further that removing
  243. the nested switch statement!  [Martin 92] covers some of these issues.
  244.  
  245.  
  246. 2.4)  Is There A Difference Between Being A Member Or Instance Of A Class?
  247. --------------------------------------------------------------------------
  248.  
  249. Yes (but be careful of context).  To use C++ terminology, an object (not
  250. a reference) is defined to be an instance of exactly one class (in classical
  251. OO), called its most derived class.  An object not directly contained in any
  252. other is called the complete object [Stroustrup 90].  An object is a member
  253. of several classes, including all of the classes its declared (or most derived)
  254. class inherits from.  With static typing and inclusion polymorphism based on
  255. class, if a polymorphic object (or reference) is made to refer to an object,
  256. that object must be a member of the polymorphic object's class.
  257.  
  258. This also provides a good example of differing definitions among object-
  259. oriented languages, since a member is defined as above in CLOS, but a member of
  260. a class is one of its instance variables in C++.
  261.  
  262.  
  263. 2.5)  What Is The Difference Between Static And Dynamic Typing?
  264. ---------------------------------------------------------------
  265.  
  266. Static typing refers to types declared in a program at compile-time, so no type
  267. information is available on objects at run-time.  Dynamic typing uses the
  268. inherent types of polymorphic objects, keeping track of the types of objects at
  269. run-time.  Statically typed dynamic binding is a compromise (usually
  270. implemented with tables of function pointers and offsets), and is how
  271. statically-typed OO languages provide polymorphism.  Some approaches provide
  272. both static and dynamic typing, sometimes with static typing providing type-
  273. safe programs and dynamic typing providing multiple-polymorphism [Agrawal 91]
  274. [Mugridge 91].  See also section 2.3.
  275.  
  276. Static typing is more efficient and reliable, but loses power.  Typical
  277. restrictions include only allowing a common set of base class functions (or
  278. any common functions for the more general subtyping or parametric polymorphic
  279. cases) to be available on formal objects and a lack of multiple-polymorphism
  280. (see section 1.19), both of which are overcome with dynamic typing.
  281.  
  282. Many languages provide dynamic typing: Smalltalk, Self, Objective-C, and etc.
  283. A limited dynamic typing scheme, called RTTI (Run Time Type Identification),
  284. is even being considered for the C++ standard.  A similar facility to safe
  285. downcasting (historically known as type narrowing), the thrust of RTTI, can
  286. also be found in recent versions of Eiffel.
  287.  
  288. See section 3.4 for a categorization of common OO languages by type system.
  289.  
  290.  
  291. 2.6)  What Is This I Hear About ML And Functional Programming Languages?
  292. ------------------------------------------------------------------------
  293.  
  294. ML, Metalanguage, is a functional programming language with a strongly typed
  295. polymorphic type system [Wikstrom 87].  Russell (see Appendix E) is a more
  296. recent functional language and Haskell [Hudak 92] provides a more modern and
  297. "pure" example.  Section 2.5 discusses why static typing has less power/
  298. flexibility than dynamic typing and the same applies to ML (although see the
  299. appendixes for an experimental dynamic extension to ML, Alcool-90 and [Cardelli
  300. 85] for a proper placement of ML's type system).  ML doesn't use inheritance
  301. for polymorphism; unlike OO languages, but provides the prototypical example of
  302. parametric polymorphism, so no inheritance is required.  This is "true" or
  303. "pure" statically (or strongly) checked parametric polymorphism, by Strachey's
  304. (and Cardelli and Wegner's) definitions.
  305.  
  306. Smalltalk is an example of a dynamically-typed language which does not check
  307. types during assignment (and hence for parameters) and therefore provides
  308. parametric polymorphism without static constraints (by Strachey's definition).
  309. However, Smalltalk's style uses inclusion polymorphism in practise and
  310. inheritance for subclassing (representation).
  311.  
  312.  
  313. 2.7)  What Is A Separation Between Type And Class (Representation)?
  314. -------------------------------------------------------------------
  315.  
  316. For a short answer:
  317.   Subtype Polymorphism, as opposed to Subclass Polymorphism, is the best answer
  318.   in OO.  Parametric polymorphism is a related concept where this is also true,
  319.   but is of a different flavor (and usually requires object attributes by use.
  320.   See also section 2.1).
  321.  
  322. A type can be considered a set of values and a set of operations on those
  323. values.  This can insure type-safe programming.  However, the representation of
  324. types (classes in OO) can be separated from the notion of type allowing many
  325. representations per type while still maintaining reasonable type-safety.
  326.  
  327. In many languages, a type has a single representation insuring all operations
  328. performed on that type are well defined (statically bound) and providing for
  329. efficiency by taking advantage of that representation wherever used.  In many
  330. OO languages, subclassing and dynamic binding provides for greater flexibility 
  331. by providing object specialization.  However, in many OO languages classes are
  332. used for assignment compatibility forcing an assigned object to inherit
  333. (transitively) from any polymorphic object's class (inclusion polymorphism
  334. based on class, or subclass polymorphism).  This insures all operations to be
  335. performed on any polymorphic object are satisfied by any replacing objects.
  336. This also insures all types share a common representation, or at least a
  337. common base interface specification.
  338.  
  339. By separating type from class, or representation (or perhaps separating class
  340. from type, by the aforementioned definition of type), a replacing object must
  341. satisfy the operations or type constraints of a polymorphic object (subtype
  342. polymorphism) but are not required to do to do so by an inheritance relation
  343. (subclass polymorphism), as is typical in most OOPLs.  Dropping this
  344. restriction is somewhat less type-safe, because accidental matches of method
  345. signatures can occur, calling for greater care in use.  [Black 86] discusses
  346. this issue in Emerald.  The same issue arises in parametric polymorphism
  347. (generics/templates), as any method matching a required signature is accepted,
  348. calling for careful matching of actual and formal generic parameters.  The
  349. difference between static and dynamic binding in OO and dynamic binding and
  350. subtyping seems similar.  A possible loss of semantic integrity/similarity is
  351. contrasted with greater power.
  352.  
  353. It is possible to specify desired abstract properties of type specifications
  354. with mechanisms similar to Eiffel's pre-, post-, and invariant conditions.
  355. This helps to insure the semantic integrity of replacing objects and their
  356. behavior.  [Liskov 93] provides a recent exposition.
  357.  
  358. Abstract classes ([Stroustrup 91] and [Meyer 88]) in typing provide a facility
  359. similar to subtype polymorphism; however, ACs require type compatible classes
  360. to inherit from them, providing a subclass polymorphism facility, and ACs can
  361. also specify representation.  Subtyping is therefore most useful to avoid
  362. spreading knowledge of classes throughout a system, which is a high priority
  363. for loosely coupled modules and in distributed programming [Black 87].
  364.  
  365. The formal type system found in [Cardelli 85], Emerald/Jade [Black 86] and
  366. [Raj 89], original trellis/Owl, an experimental C++ extension (See Appendix E,
  367. Signatures), Sather (Eiffel-based), and an Eiffel superset [Jones 92] are all
  368. examples of OO systems providing subtype polymorphism.  Functional languages
  369. such as ML, Russell, and Haskell provide a separation with pure parametric
  370. polymorphism (as is also commonly found in OO languages in additon to inclusion
  371. polymorphism).
  372.  
  373.  
  374. 2.8)  What Are Generics And Templates?
  375. --------------------------------------
  376.  
  377. Short Answer: Parametric Polymorphism (although various implementations
  378.               provide various subsets).
  379.  
  380. Generics (or Templates in C++) refer to the ability to parameterize types
  381. and functions with types.  This is useful for parameterized classes and
  382. polymorphic functions as found in languages such as Ada, C++, Eiffel, and
  383. etc., although these are "syntactic" or restricted forms [Cardelli 85].
  384. Generics are orthogonal to inheritance, since types (and classes)
  385. may be generically parameterized.  Generics provide for reusability in
  386. programming languages.  An example is a Stack with a generically
  387. parameterized base type.  This allows a single Stack class to provide
  388. many instantiations such as a Stack of ints, a Stack of any fundamental
  389. or user defined type, or even a Stack of Stacks of ...  Another example is
  390. a polymorphic sort function taking a base type with a comparison operator.
  391. The function can be called with any type (containing a comparison operator).
  392. See [Booch 87b] for several examples in Ada and [Stroustrup xx] and [Murray
  393. 93] for examples in C++.
  394.  
  395. While generics have many advantages, typical limitations include a static
  396. nature, which is an advantage for strong typechecking but a potential
  397. disadvantage when causing dynamic compilation (leading to a time/space
  398. efficiency tradeoff), and sources can cause inlining and create source code
  399. dependencies and expand code size (unlike a single-body or "true"
  400. parametrically polymorphic implementation.  Generics can also be viewed as a
  401. special case of type variables.
  402.  
  403. Functions are typically generic in statically-typed parametrically-polymorphic
  404. languages.  One such popular functional language is ML, in which all functions
  405. are generic.  Russell and Haskel are more modern variants (references are
  406. forthcoming, however see APPENDIX E).
  407.  
  408.  
  409. SECTION 3:  GENERAL
  410. ===================
  411.  
  412.   References:   (many more are to come)
  413.     [Coplien 92]    Covers C++, symbolic, exemplar (single-hierarchy), etc.
  414.     [Kim 89]        Covers many OO systems.
  415.  
  416.  
  417. 3.1)  What Is The "Classical" Object-Oriented Paradigm?
  418. -------------------------------------------------------
  419.  
  420. This refers to the usual class and object model.  Its any 2+ level system
  421. as described in section 1.4.  See also [Coplien 92].
  422.  
  423.  
  424. 3.2)  What Is The "Delegation/Prototyping" Object-Oriented Paradigm?
  425. --------------------------------------------------------------------
  426.  
  427. See [Kim 89, ch 1,3].
  428.  
  429. This is the 1 Level System as Described under Meta-Classes.  Delegation refers
  430. to the delegating of responsibility and can be applied to inheritance.  When a
  431. derived class does not have a desired attribute, it "delegates" responsibility
  432. to one of its base classes.  In delegation systems, each object has a delegate
  433. list instead of a parent list. Thus, delegation's primary emphasis is 
  434. on message passing where an object could delegate responsibility of a message
  435. it couldn't handle to objects that potentially could (its delegates).  Any
  436. object can be added to the delegate list, giving dynamic inheritance (of a
  437. sort).  Typically, delegation and prototyping languages also have "part
  438. inheritance" in which fields and methods can be added and deleted from objects.
  439. This makes for easy "prototyping", which allows for objects to be constructed
  440. piece by piece at run-time, although the term "prototyping" in the context of
  441. delegation languages usually refers to objects serving as prototypes for
  442. object instantiation, or exemplars.
  443.  
  444. Next's NextStep OS provides delegation as an add-On to Objective-C, providing
  445. an example of delegation in a class-based language [Garfinkel 93].
  446.  
  447.  
  448. 3.3)  Are There Any Other Object-Oriented Paradigms?
  449. ----------------------------------------------------
  450.  
  451. There are many alternatives in OO.  Emerald/Jade ([Black 86] and [Raj 89])
  452. provides one, where inheritance is replaced with a roughly equivalent form
  453. where reuse occurs at a finer degree of granularity - method and instance
  454. variables - with subtype polymorphism making up the difference.
  455.  
  456. CLOS [Kim 89, ch 4] has a looser coupling of methods to classes and doesn't
  457. distinguish a receiver, but packages can help make up the difference.
  458.  
  459. Object Specialization [Sciore 89] is an example of a hybrid approach between
  460. delegation and classical systems, where parent classes have an extra level
  461. of indirection and inheritance hierarchies are specified on a per object/class
  462. basis.
  463.  
  464.  
  465. 3.4)  What Are The Major Object-Oriented Programming Languages Today?
  466. ---------------------------------------------------------------------
  467.  
  468. Statically-Typed:
  469.   Add 1 To Cobol giving Cobol with Objects.
  470.   Beta
  471.   C++
  472.   Classic-Ada
  473.   Dragoon
  474.   Emerald/Jade
  475.   Object Pascal
  476.   Trellis/Owl
  477.  
  478. Dynamically-Typed:
  479.   Actors Languages
  480.   Flavors
  481.   Self
  482.   Smalltalk
  483.  
  484. Both:
  485.   Actor
  486.   Ada-9x
  487.   C++ (With RTTI)
  488.   Cecil
  489.   CLOS
  490.   Eiffel
  491.   Modula-3
  492.   Objective-C
  493.   Sather
  494.  
  495.  
  496. 3.5)  What Are Object-Oriented Databases And Persistence?
  497. ---------------------------------------------------------
  498.  
  499. See also Appendices B and E and the comp.database.object newsgroup.
  500. Refs to be included in future FAQs.
  501.  
  502. Object-Oriented Databases are databases that support objects and classes.  They
  503. are different from the more traditional relational databases because they allow
  504. structured subobjects, each object has its own identity, or object-id (as
  505. opposed to a purely value-oriented approach) and because of support for methods
  506. and inheritance.  It is also possible to provide relational operations on an
  507. object-oriented database.  OODBs allow all the benefits of object-orientation,
  508. as well as the ability to have a strong equivalence with object-oriented
  509. programs, an equivalence that would be lost if an alternative were chosen, as
  510. with a purely relational database.
  511.  
  512. Another way of looking at Object-Oriented Databases is as a persistent object
  513. store with a DBMS.
  514.  
  515. Persistence is often defined as objects (and their classes in the case of
  516. OODBs) that outlive the programs that create them.  Object lifetimes can be
  517. viewed as a hierarchy, with locals/automatics having the shortest default
  518. lifetime and objects stored indefinitely in an OODB (which are persistent)
  519. having the longest.  Persistent object stores do not support query or
  520. interactive user interface facilities, as found in a fully supported OODBMS.
  521.  
  522. Appendix B also contains references for relational interfaces to OODBs.
  523.  
  524.  
  525. 3.6)  What Are Object-Oriented Operating Systems?
  526. -------------------------------------------------
  527.  
  528. Refs to be included in future FAQs.  See also Appendix E.
  529.  
  530. Object-Oriented Operating Systems provide resources through objects, sometimes
  531. all the way down to to the machine (OO architectures are found at the bottom).
  532. They are almost always distributed systems (DOS or DPOS), allowing objects to
  533. be passed freely between machines.  They are typically capability-based since
  534. objects, and hence system resources, can only be accessed if a capability to
  535. them is available to programs.
  536.  
  537. Here are some abstracts taken from several postings to the net.  This list is
  538. by no means exhaustive.
  539.  
  540. Chorus Micro-kernel (written in C++)
  541. Choices (research OS, University of Illinois, written in C++, supports SVR4)
  542. GEOS    (GeoWorks', written in Object Assembler, OO superset of 8086) 
  543. Mach    (CMU, supports BSD 4.3, really message-based)
  544. NachOS  (written in C++, OS teaching/learning OS)
  545. Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces)
  546. SOS
  547. Spring      (Sun, written in C++)
  548. PenPoint OS (Go, written in C++)
  549.  
  550.  
  551. From: whitney@oberon.Meakins.McGill.CA ()
  552.  
  553. Insight ETHOS: On Object-Orientation in Operating Systems
  554. ISBN 3 72811948 2
  555.  
  556. This thesis covers the design of an extensible object-oriented 
  557. operating systems. The language used was Oberon-2. It includes
  558. a generalization of the Rider/Carrier principle, Object Directories
  559. as well as basic OS issues such as memory, file, tasking management. 
  560. It covers extensible objected-oriented programming from hardware up.
  561. It reviews other designs such as Clouds and Choices which where written
  562. It reviews other designs such as Clouds and Choices which where written
  563. on C++. [[ The lack of type-tests in C++ was a problem in other designs.]]
  564. ETHOS was implemented as an operating system for the Ceres computers
  565. at the ETH. 
  566.  
  567.  
  568. 3.7)  What Are The Current Object-Oriented Methodologies?
  569. ---------------------------------------------------------
  570.  
  571. Here is a list of OOSE Methodologies:
  572.  
  573.   Berard                        [Berard 93]
  574.   BON                           [Nerson 92]
  575.   Booch                         [Booch 94]
  576.   Coad/Yourdon                  [Coad 91]
  577.   Colbert                       [Colbert 89]
  578.   de Champeaux                  [de Champeaux 93]
  579.   Embley                        [Embley 92]
  580.   EVB                           [Jurik 92]
  581.   FUSION                        [Coleman 94]
  582.   HOOD                          [HOOD 89]
  583.   IBM                           [IBM 90,91]
  584.   Jacobson                      [Jacobson 92]
  585.   Martin/Odell                  [Martin 92]
  586.   Reenskaug (OOram, was OORASS) [Reenskaug 91]
  587.   ROOM                          [APPENDIX D, ObjecTime CASE Toolset]
  588.   Rumbaugh et al.               [Rumbaugh 91]
  589.   Shlaer and Mellor             [Shlaer 88 and 92]
  590.   Wasserman                     [Wasserman 90]
  591.   Winter Partners (OSMOSYS)     [Winter Partners]
  592.   Wirfs-Brock et al.            [Wirfs-Brock 90]
  593.  
  594. Further Ideas And Techniques:
  595.   Meyer                         [Meyer 88]
  596.   Stroustrup                    [Stroustrup 91]
  597.  
  598. See APPENDIX D for CASE systems supporting these methodologies (several from
  599. the originators themselves).
  600.  
  601. See also section 1.21 for a discussion on OOA/OOD and etc.
  602.  
  603. Summaries and comparisons will be provided in future FAQs.  Suggestions for
  604. inclusion of other major or new methodologies should be sent to the FAQ author.
  605.  
  606. Here are some comparison studies posted to the net:
  607.  
  608. Arnold, P., Bodoff, S., Coleman, D., Gilchrist, H., Hayes, F., An Evolution of 
  609. Five Object Oriented Development Methods, Research report, HP Laboratories, 
  610. June 1991
  611.  
  612. de Champeaux, Dennis and Faure, Penelope. A comparative study of object-
  613. oriented analysis methods. Journal of Object Oriented Programming (JOOP), pp
  614. 21-32.  Vol.5, No. 1, 3/4-92
  615.  
  616. Fichman R.G. & Kemerer C.F.  OO and Conventional Analysis and Design
  617. Methodologies.  Computer, Oct 1992, Vol 25, No. 10, p 22-40
  618.  
  619. Fichman, Robert and Kemerer, Chris. Object-Oriented and Conventional Analysis
  620. and Design Methods - Comparison and Critique.  IEEE-Comp, Oct, 1992, pp 22-39.
  621. OOA, OOD, conventional analysis, conventional design, DeMarco SA, Yourdon SA,
  622. Bailin OO requirements specification, Coad-Yourdon OOA, Shlaer-Mellor OOA,
  623. Yourdon-Constantine SD, Martin information engineering design, Wasserman OOSD,
  624. Booch OOD, Wirfs-Brock responsibility-driven design.
  625.  
  626. Hong, S., van den Goor, G., and Brinkkemper, S.  A Comparison of Object-
  627. oriented Analysis and Design Methods. Working paper, Computer Information
  628. Systems Department, Georgia State University, Atlanta USA, 1992, 12 pages. To
  629. appear in the Proceedings of the 26th Hawaiian international conference on
  630. System Sciences, IEEE Computer Science Press.
  631.  
  632. Hong, S., van den Goor, G., Brinkkemper, S. A Formal Approach to the Comparison
  633. of Object-Oriented Analysis and Design Methodologies, Hawaii International 
  634. Conference on System Sciences (HICSS) (IEEE Computer Society Press, Hawaii)
  635. 1993, Vol. IV, pp. 689-698.  Summary of [van den Goor et.al., 1992] below.
  636.  
  637.   Order procedure:
  638.   Available from the authors at cisssh@gsusgi2.gsu.edu or sjbr@cs.utwente.nl.
  639.   The authors, regretfully, cannot supply ftp, postscript, TEX, or 
  640.   whatsoever.
  641.  
  642. Monarchi, David and Puhr, Gretchen I. A Research Typology for Object-Oriented
  643. Analysis and Design.  CACM/September 1992/Vol.35, No.9, pp35.
  644.  
  645. [Wilkie 93] summarizes, compares, and provides examples of Booch, Wirfs-Brock,
  646. Hood, Coad and Yourdon, Winter Partners, Shlaer and Mellor, Jacobson,
  647. Wasserman et al, Rumbaugh, Reenskaug et al, and Colbert.
  648.  
  649. Wirfs-Brock, R.J. and Johnson, R.E., "Surveying Current Research in Object-
  650. Oriented Design," The Communications of ACM, (33, 9) Sept. 1990, pp. 104-1124.
  651.  
  652. UNICOM. Approaches to Object-Oriented Analysis and Design.
  653. tel: l 44 895 256 484. Ask the TOC and have a look at it.
  654.  
  655.  
  656. Also commercially available:
  657.  
  658. An Evaluation of Object-Oriented Analysis and Design Methodologies (9)
  659. J. Cribbs, C Roe, S. Moon
  660. SIGS Books
  661. (212) 274-0640
  662. $149.
  663.  
  664. Object-Oriented Methodology Comparison Study (10 methodologies)
  665. Berard, Booch, Coad/Yourdon, Colbert, Embley, IBM, Martin/Odell, Rumbaugh,
  666. Shlaer/Mellor, Wirfs-Brock.  Also contains refs to several previous studies.
  667. Berard Software Engineering
  668. 101 Lakeforest Blvd., Suite 360, Gaithersburg, MD 20877
  669. Contact Person: Jim Youlio
  670. Phone:        301-417-9884
  671. Fax:          301-417-0021
  672. email:        info@bse.com
  673.  
  674. [van den Goor et.al., 1992] G. van den Goor, S. Hong and S. Brinkkemper,
  675. A Comparison of Six Object-oriented Analysis and Design Methods. Report
  676. Center of Telematics and Information Technology, University of Twente,
  677. the Netherlands, and Computer Information Systems Department, Georgia
  678. State University, Atlanta, USA, 1992, 163 pages, US$ 70.
  679.  
  680. This report gives an in-depth analysis of six generally accepted
  681. O-O methods, that are available in textbooks. The background, steps,
  682. concepts, notations, and specification techniques of the methods
  683. are extensively compared.
  684.  
  685. The six methods are:
  686. -  Object Oriented Analysis & Object Oriented Design (OOA/OOD) of Coad &
  687.       Yourdon (1991)
  688. -  Designing Object Oriented Software (DOOS) of Wirfs-Brock et.al. (1990)
  689. -  Object Modelling Technique (OMT) of Rumbaugh et.al. (1991)
  690. -  Object Oriented Systems Analysis (OOSA) of Shlaer & Mellor (1988)
  691. -  Object Oriented Design with Applications (OODA) of Booch (1991)
  692. -  Object Oriented Analysis and Design (OOAD) of Martin & Odell (1992).
  693.  
  694. The comparison is performed by meta-modelling, resulting into detailed
  695. information on the concepts of the methods (in EER notation) and on the
  696. steps of the procedure of the methods (in Task Diagrams). Extensive
  697. comparison tables of steps, concepts, techniques are included. Mappings of
  698. the methodical concepts to the constructs of programming languages (C++,
  699. Objective-C, Smalltalk-80, Object Pascal en CLOS) are given. A small
  700. test case illustrates the application of the methods.
  701.  
  702. Order procedure:
  703. Those who want to order the complete report (163 pp.) can order one by
  704. specifying their postal address in an e-mail (sjbr@cs.utwente.nl) or fax
  705. (+31.53.33.9605) attn. Sjaak Brinkkemper. The report will be send within
  706. two weeks with an invoice for US$ 70. (seventy dollar; including shipping,
  707. excl VAT).
  708.  
  709.  
  710. 3.8)  What Is the OMG/OMA/ORB/CORBA?
  711. ------------------------------------
  712.  
  713. Contents:
  714.   (3.8.1)  Contact Information
  715.   (3.8.2)  OMG Summary
  716.   (3.8.3)  Mail Server Access
  717.   (3.8.4)  OMG Publications
  718.              - First Class (Bi-Monthly Newsletter)
  719.              - Object Management Architecture Guide (OMA)
  720.              - The Common Object Request Broker: Arch. and Spec. (Corba)
  721.              - Pricing
  722.   (3.8.5)  Implementations (Brief)
  723.   (3.8.6)  Implementation Descriptions
  724.   (3.8.7)  Books, Articles, And Literature
  725.  
  726.  
  727. 3.8.1  Contact Information
  728. __________________________
  729.  
  730. Contact Person: Richard Soley (technical director) soley@omg.com
  731.  
  732. FTP Sites: 
  733.   omg.org:pub/*
  734.   omg.org:pub/NEC_DII/93-1-2.tar...            *CORBA (DII) (corba.ps.Z)
  735.   omg.org:pub/OMG_IDL_CFE_1.2/bin*              idl.SunOS4.x, idl.Solaris2.x
  736.   claude.ifi.unizh.ch:under pub/standards/spec  CORBA Spec
  737.  
  738. Headquarters:                            Marketing Office:
  739.   492 Old Connecticut Path                 3823 Birchwood Drive
  740.   Framingham, MA 01701                     Boulder, CO  80304
  741.   Tel: 508-820-4300                        Tel: 303-444-8129
  742.   Fax: 508-820-4303                        Fax: 303-444-8172
  743.  
  744.  
  745. 3.8.2  OMG Summary
  746. __________________
  747.  
  748. From: soley@emerald.omg.ORG (Richard Mark Soley)
  749. Subject: OMG
  750.  
  751. In answer to your general question about the OMG, here's a brief overview.
  752. Feel free to call, fax or email for more information.
  753.  
  754.         -- Richard Soley
  755.            Vice President & Technical Director
  756.            Object Management Group, Inc.
  757.            and coincidentally, MIT '82, SM '85, PhD '89 (EECS)
  758.  
  759. The Object Management Group (OMG) is an international software industry
  760. consortium with two primary aims:
  761.  
  762. (*) promotion of the object-oriented approach to software engineering
  763.     in general, and
  764.  
  765. (*) development of command models and a common interface for the development
  766.     and use of large-scale distributed applications (open distributed
  767.     processing) using object-oriented methodology.
  768.  
  769. In late 1990 the OMG published its Object Management Architecture
  770. (OMA) Guide document. This document outlines a single terminology for
  771. object-oriented languages, systems, databases and application
  772. frameworks; an abstract framework for object-oriented systems; a set
  773. of both technical and architectural goals; and an architecture
  774. (reference model) for distributed applications using object-oriented
  775. techniques.  To fill out this reference model, four areas of
  776. standardization have been identified:
  777.  
  778. 1) the Object Request Broker, or key communications element, for
  779.    handling distribution of messages between application objects in
  780.    a highly interoperable manner;
  781.  
  782. 2) the Object Model, or single design-portability abstract model for
  783.    communicating with OMG-conforming object-oriented systems;
  784.  
  785. 3) the Object Services, which will provide the main functions for
  786.    realising basic object functionality using the Object Request Broker -
  787.    the logical modeling and physical storage of objects; and
  788.  
  789. 4) the Common Facilities will comprise facilities which are useful in
  790. many application domains and which will be made available through OMA
  791. compliant class interfaces.
  792.  
  793. The OMG adoption cycle includes Requests for Information and
  794. Proposals, requesting detailed technical and commercial availability
  795. information from OMG members about existing products to fill
  796. particular parts of the reference model architecture.  After passage
  797. by Technical and Business committees to review these responses, the
  798. OMG Board of Directors makes a final determination for technology adoption.
  799. Adopted specifications are available on a fee-free basis to members and
  800. non-members alike.
  801.  
  802. In late 1991 OMG adopted its first interface technology, for the Object
  803. Request Broker portion of the reference model.  This technology, adopted
  804. from a joint proposal (named "CORBA") of Hewlett-Packard, NCR Corp.,
  805. HyperDesk Corp., Digital Equipment Corp., Sun Microsystems and Object
  806. Design Inc. includes both static and dynamic interfaces to an inter-
  807. application request handling software "bus."
  808.  
  809. Unlike other organizations, the OMG itself does not and will not
  810. develop nor sell software of any kind.  Instead, it selects and promulgates
  811. software interfaces; products which offer these interfaces continue to be
  812. developed and offered by commercial companies.
  813.  
  814. In order to serve OMG membership interested in other object-oriented systems
  815. arenas besides the distributed system problem, the Group supports Special
  816. Interest Groups for discussion of possible standards in other areas.  These
  817. groups at present are:
  818.  
  819.         1) Object Oriented Databases;
  820.         2) OO Languages;
  821.         3) End-User Requirements;
  822.         4) Parallel Processing;
  823.         5) Analysis & Design Methodologies;
  824.         6) Smalltalk; and
  825.         7) Class Libraries.
  826.  
  827. Any company, university/research institution or individual, whether
  828. end-user or vendor, can become a member of this body.  Administrative
  829. details are given at the end of this paper.
  830.  
  831.  
  832. 3.8.3  Mail Server Access
  833. _________________________
  834.  
  835. Information via Mail Server:
  836.   Send the following commands in a letter to the mail server.
  837.  
  838. mail omg_server@omg.org
  839. help                             (how to use file server)
  840. index                            (return a list of all available files)
  841. get <file>                       (get files returned by  index)
  842. log <info>                       (logs info on server)
  843. address <e-mail address)         (use this address instead of sender)
  844. list <directory> [match]         (index a directory, pattern 'match' files)
  845. size <segment size>              (max file size to send)
  846.  
  847. list mail
  848. list docs
  849. get docs/doclist.txt             
  850. get docs/91-12-1.ps               CORBA spec [although it looks a little old]
  851.  
  852.  
  853. Recommended (from the net):
  854.  
  855. mail omg_server@omg.org
  856. Subject: 
  857. help
  858. index
  859. list
  860. list mail
  861. list docs
  862. get docs/doclist.txt
  863.  
  864.  
  865. 3.8.4  OMG Publications
  866. _______________________
  867.  
  868. Below is from omg.org:pub/CORBA
  869.  
  870.  
  871. > First Class (Bi-Monthly Newsletter)
  872.  
  873. First Class is OMG's non-commercial bi-monthly 28-page
  874. newsletter. First Class provides current information on Object
  875. Technology developments, both technically and commercially. First
  876. Class offers an open editorial forum on numerous Object
  877. Technology topics and issues.  This publication features
  878. commentaries from software industry leaders, informative user
  879. case histories, OT training information and the latest object-
  880. oriented product announcements.  All OMG activities and the
  881. ongoing development of the Object Management Architecture are
  882. regularly reported.
  883.  
  884.  
  885. > Object Management Architecture Guide (OMA)
  886.  
  887. The members of the OMG have a shared goal of developing and using
  888. integrated software systems.  These systems should be built using
  889. a methodology that supports modular production of software;
  890. encourages reuse of code; allows useful integration across lines
  891. of developers, operating systems and hardware; and enhance long-
  892. range maintenance of that code.  As an organization, OMG believes
  893. that the object-oriented approach to software construction best
  894. supports their goals.  The OMA publication outlines the
  895. groundwork for technology response to Request for Proposals (RFP)
  896. and the adoption of specifications.
  897.  
  898.  
  899. > The Common Object Request Broker: Arch. and Spec. (Corba)
  900.  
  901. The CORBA, as defined by the OMG's Object Request Broker (ORB),
  902. provides the mechanisms by which objects transparently make
  903. requests and receive responses. The ORB provides interoperability
  904. between applications on different machines in heterogeneous
  905. distributed environments and seamlessly interconnects multiple
  906. object systems. The Common Object Request Broker Architecture and
  907. Specification described in this published document is a self-
  908. contained response to the Request for Proposals (RFP) issued by
  909. the ORB Task Force of the OMG.
  910.  
  911. > Pricing
  912.  
  913. [Here's why you don't see the specifications posted on the net!  These are
  914.  from the list of literature and periodicals listed in omg.org:pub/CORBA]
  915.  
  916. o I would like a one year subscription to First Class
  917.     ______ for $40 U.S.,  ______ for $50 outside U.S.
  918.  
  919. o I would like to order  ______ copy(s) of the Object Management
  920.   Architecture (OMA) Guide for $50 each.
  921.  
  922. o I would like to order  ______ copy(s) of the CORBA for $50 each.
  923.  
  924. o [Combinations]
  925.  
  926. Contact documents@omg.org or omg_documents@omg.org for more of the same...
  927.  
  928.  
  929. 3.8.5  Implementations (Brief)
  930. ______________________________
  931.  
  932. > DEC ACA.  Maynard, MA
  933.  
  934. Runs on AIX,VMS,ULTRIX,,MS-WINDOWS,MAC,HP-UX,UNIX, NT(planned).
  935.  
  936.  
  937. > HP ORB Plus and HP Distributed Smalltalk
  938.  
  939. Full implementation of the OMG CORBA 1.1 Object Request Broker.
  940. Also DOMF
  941.  
  942. Hewlett-Packard
  943. Distributed Computing Group
  944. 19447 Pruneridge Avenue
  945. Cupertino, CA 95014-9974 (USA)
  946. Ian Fuller ian@cup.hp.com (408) 447-4722
  947.  
  948.  
  949. > HyperDesk (Westborough MA) HD-DOMS, joe_cordo@hyperdesk.com
  950.  
  951. Runs on SPARC, HP/UX, IBM RS-6000, Data General Aviion, MS-Windows (client
  952. API only), NetWare (planned, Novell owns part of HyperDesk).
  953.  
  954.  
  955. > IBM SOM (System Object Model)
  956.  
  957. Available on AIX and OS/2.  See Distributed Computing Monitor, March 93 for a
  958. detailed review.
  959.  
  960.  
  961. > IONA Technologies, Dublin Orbix, info@iona.ie
  962.  
  963.     runs on (Unix (Solaris 1.1) (now), DOS, Windows, NT (planned)
  964.  
  965.  
  966. > ROLSCH CONSULTING (RC-ORB)
  967.  
  968.   implements ORB spec, DOS/Windows 3.1, 12 user license: $99.
  969.   Ref: Datamation, LOOK AHEAD Section, August 1.  German Company.
  970.  
  971.  
  972. > SuiteSoftware (Anaheim CA) SuiteDOME
  973.  
  974.     runs on VAX/VMS, Unix, PC
  975.  
  976.  
  977. > Sun DOE
  978.  
  979.  
  980. > Tivoli
  981.  
  982.  
  983. > CS Dept. University of Zurich, Switzerland.  maffeis@ifi.unizh.ch
  984.  
  985.     The ELECTRA Toolkit (not finished)
  986.  
  987.  
  988. 3.8.6  Implementation Descriptions
  989. ___________________________________
  990.  
  991. The OMG also has a (Corporate) Membership list and "known CORBA supporters"
  992. list with their info package.
  993.  
  994.  
  995. > The ELECTRA Toolkit
  996.  
  997. CS Dept. University of Zurich, Switzerland.  maffeis@ifi.unizh.ch
  998. The ELECTRA Toolkit
  999.  
  1000. Subject: ORB Implementations
  1001. Date: Tue, 4 May 1993 13:12:36 +0200 (MET DST)
  1002. From: Silvano Maffeis <maffeis@ifi.unizh.ch>
  1003.  
  1004.   something like an Object Broker, but it is *not* CORBA compatible (yet).
  1005.   Electra is a research project and not available yet.
  1006.  
  1007.   Its a toolkit for building failure resilient, distributed applications
  1008.   in C++. It supports object-groups, virtual synchrony, multithreading
  1009.   etc. Electra is based on the HORUS toolkit (which is "the new ISIS
  1010.   implementation" developed at Cornell, Ithaca NY.)
  1011.   An overview paper to electra is available from:
  1012.   ftp.ifi.unizh.ch: pub/techreports/electra.ps.Z
  1013.  
  1014.  
  1015. > HD_DOMS
  1016.  
  1017. HD-DOMS (HyperDesk Distributed Object Management System).  A
  1018. CORBA-compliant DOMS.  Includes a GUI API driver for prototyping and
  1019. exercising objects, a bundled object database for persistent object
  1020. storage, a Kerberos-based authentication service, a location service, a
  1021. set of base classes to speed development, and a test script language.
  1022. Revision 1.0 has been shipping since beginning of '92.  Revision 1.1
  1023. (which includes support for CORBA's static client interface) is available
  1024. now, and a NetWare version is in the works.  Submitted a C++ language
  1025. mapping for IDL to the OMG recently.
  1026.  
  1027. HyperDesk Corporation
  1028. 2000 West Park Drive
  1029. Westboro, MA 01581
  1030. (508)366-5050
  1031.  
  1032.  
  1033. > HP ORB Plus and HP Distributed Smalltalk
  1034.  
  1035. From: daryl@cup.hp.com (Daryl Odnert)
  1036. Subject: HP ORB Plus and Distributed SmallTalk
  1037. Summary: Official HP Press release on HP ORB Plus and DST 2.0
  1038. Date: Thu, 30 Sep 1993 20:13:48 GMT
  1039. Organization: Hewlett-Packard
  1040.  
  1041.   ============================================================================
  1042.   SUBJECT:  HP INTRODUCES DISTRIBUTED-COMPUTING SOLUTION FOR BUILDING
  1043.             SCALABLE, OBJECT-ORIENTED APPLICATIONS
  1044.   DATE:     September 27, 1993
  1045.   ----------------------------------------------------------------------------
  1046.  
  1047.    PALO ALTO, Calif.--(BUSINESS WIRE) via First! -- Hewlett-Packard Company
  1048.  today introduced a distributed-computing solution for building scalable,
  1049.  object-oriented applications.
  1050.  
  1051.    With HP ORB Plus, programmers can develop scalable, object-based
  1052.  applications that can be distributed throughout the enterprise.  HP also
  1053.  introduced an enhanced version of HP Distributed Smalltalk.
  1054.  
  1055.    HP ORB Plus and HP Distributed Smalltalk are major components of HP's
  1056.  overall distributed-computing strategy, which is designed to give customers
  1057.  integrated, desktop access to enterprise-wide information and resources in
  1058.  distributed heterogeneous systems environments.  Of all computer companies,
  1059.  HP believes it is best positioned to help customers take advantage of
  1060.  distributed computing. HP provides a wide variety of distributed-computing
  1061.  products, understands how to help customers adopt new technology for maximum
  1062.  business benefit, and offers worldwide support and training programs,
  1063.  ranging from analysis and design to deployment.
  1064.  
  1065.    HP ORB PLUS:  CORBA AND DCE COMBINED
  1066.  
  1067.    HP ORB Plus is the only environment that combines the complete CORBA 1.1
  1068.  specification from the Object Management Group with the DCE standard from
  1069.  the Open Software Foundation(tm) as its transport mechanism.  DCE is
  1070.  designed to let developers write one application and then deploy it --
  1071.  without modification -- on any other system that supports DCE.  HP ORB Plus
  1072.  reduces the complexity of developing distributed applications so programmers
  1073.  can concentrate on the application itself without needing to know multiple
  1074.  operating systems, networking protocols or where application objects are
  1075.  stored.
  1076.  
  1077.    The DCE (Distributed Computing Environment) standard provides an
  1078.  integrated set of services that can be used separately or together to
  1079.  provide a distributed computing environment that's easy to administer.  The
  1080.  CORBA (common-object-request-broker architecture) specification provides a
  1081.  standard for how objects (in applications, repositories or class libraries)
  1082.  make requests and receive responses across a distributed network.
  1083.  
  1084.    HP ORB PLUS DETAILS
  1085.  
  1086.    HP ORB Plus consists of several components: the Distributed Object
  1087.  Management Facility (DOMF), object services, developers' and administrative
  1088.  tools, and sample applications.  HP's DOMF provides a location-transparent
  1089.  object-communication mechanism across heterogeneous networks by using the
  1090.  DCE standard.  This object- enabling technology specification was jointly
  1091.  developed with SunSoft. By following a common specification, HP and SunSoft
  1092.  have made it easier for their customers to port applications between their
  1093.  platforms.
  1094.  
  1095.    In addition, HP is working with IBM to integrate HP's DOMF with IBM's
  1096.  System Object Model with extensions for distribution.  This integration will
  1097.  eventually provide users with complete scalability, portability and
  1098.  interoperability of distributed applications across HP and IBM platforms.
  1099.  This is part of the companies' planned approach toward a standards-based,
  1100.  "plug-and-play"  object-oriented environment.  This will give developers,
  1101.  system administrators and end users language-neutral, enterprise-wide,
  1102.  heterogeneous support for building, managing and using distributed object-
  1103.  oriented applications.
  1104.  
  1105.    "We're so convinced of the value of object technology that we're staking
  1106.  our entire company on it,"  said Richard Tanler, president and chief
  1107.  executive officer of Information Advantage, Inc.  "Our object-based
  1108.  applications for retailers provide the means to a competitive business edge.
  1109.  We plan to use HP ORB Plus to develop new object-based products that
  1110.  retailers can distribute to end users throughout headquarters, all chain
  1111.  stores, and warehousing and distribution operations."
  1112.  
  1113.    HP DISTRIBUTED SMALLTALK 2.0
  1114.  
  1115.    In a related announcement, HP introduced Version 2.0 of HP Distributed
  1116.  Smalltalk.  This toolset works with VisualWorks from ParcPlace Systems to
  1117.  provide programmers with a rapid development environment for creating and
  1118.  running distributed applications.  These applications can use object
  1119.  databases (currently OpenODB from HP and Gemstone from Servio) as their
  1120.  storage mechanism to facilitate the reuse of objects.
  1121.  
  1122.    Applications built using HP Distributed Smalltalk currently run without
  1123.  modification on HP, Sun and IBM UNIX(R) system-based workstations.  They
  1124.  also will run on Apple Macintosh computers and on any PC running the Windows
  1125.  3.1 or Windows NT operating systems from Microsoft(R) Corp., once
  1126.  VisualWorks 2.0 is released (expected within two months.)
  1127.  
  1128.    New HP Distributed Smalltalk 2.0 features include the following:
  1129.  
  1130.    --  easier deployment, with the ability to run multiple HP
  1131.        Distributed Smalltalk-based applications on a single system;
  1132.    --  up to 400 percent increased performance, through quicker
  1133.        sending and receiving of remote messages, and reusable
  1134.        object libraries;
  1135.    --  run-time version, for full production deployment; and
  1136.    --  easier development, with remote object browsing so
  1137.        developers can find and use objects more quickly.
  1138.  
  1139.    TECHNICAL DETAILS AND AVAILABILITY
  1140.  
  1141.    HP's DOMF includes the object request broker, interface- definition-
  1142.  language compiler, static and dynamic invocation interface and interface
  1143.  repository.  In addition to these OMG-specific features, most developers
  1144.  writing distributed, object-oriented applications require additional
  1145.  interfaces to use objects effectively.  So developers don't need to create
  1146.  their own, HP has supplied several object-service interfaces for developers
  1147.  to use. That's why HP ORB Plus includes OMG interfaces and implementations
  1148.  for properties, life cycle, associations, event notification and naming.
  1149.  
  1150.    HP's limited release of HP ORB Plus to key developers is designed so that
  1151.  customer input can be incorporated into the product early in its development
  1152.  cycle.  The initial version will work with the C++ programming language.
  1153.  For the generally available Developer's Kit, C++, C and Smalltalk
  1154.  interoperability is planned so objects written in different languages can be
  1155.  combined into one application.  The Developer's Kit is scheduled to be
  1156.  available mid- 1994; prices will be announced then.  HP ORB Plus runs on the
  1157.  HP Apollo 9000 Series 700 workstations and HP 9000 Series 800 business
  1158.  servers.
  1159.  
  1160.    Hewlett-Packard Company is an international manufacturer of measurement
  1161.  and computation products and systems recognized for excellence in quality
  1162.  and support.  The company's products and services are used in industry,
  1163.  business, engineering, science, medicine and education in approximately 110
  1164.  countries.  HP has 94,900 employees and had revenue of $16.4 billion in its
  1165.  1992 fiscal year.
  1166.  
  1167.  EDITORIAL CONTACTS:
  1168.     Hewlett-Packard Company
  1169.     Lynne Hanson, 408/447-1415, Cupertino, Calif.
  1170.     Jill Kramer, 408/447-4275, Cupertino, Calif.
  1171.  
  1172.  ==================
  1173.  Daryl Odnert       daryl@cup.hp.com
  1174.  Distributed Computing Program
  1175.  Hewlett-Packard Company
  1176.  Cupertino, California
  1177.  
  1178.  
  1179. > Iris RDOM
  1180.  
  1181. From: rcbc@cs.cornell.edu (Robert Cooper)
  1182. Subject: Re: DCE vs. CORBA
  1183. Reply-To: rcbc@isis.com
  1184. Product: Isis Reliable Distributed Object Manager(tm) (RDOM)
  1185. Company: Isis Distributed Systems, Inc., Ithaca NY, USA.
  1186.  
  1187. Isis RDOM(tm) is a fault tolerant distributed ORB platform for reliable
  1188. multi-lingual object-oriented applications. RDOM provides an "object group"
  1189. paradigm for constructing complex applications out of collections of
  1190. cooperating objects. RDOM is built on top of the Isis Distributed
  1191. Toolkit(tm). RDOM provides interfaces from Smalltalk (Parcplace),
  1192. Objective-C, and C++, and runs on most Unix workstations. RDOM is currently
  1193. not CORBA compliant, but will be brought to compliance during 3Q93.
  1194.  
  1195. Status: 
  1196.  
  1197. RDOM has been at beta test sites since January. General release of
  1198. the Smalltalk and Objective-C language interfaces is expected in June.
  1199. The C++ interface in August. Customers include AMD, Consilium and Swiss
  1200. Bank Corp).  
  1201.  
  1202.  
  1203. > Orbix
  1204.  
  1205. Orbix
  1206. Iona Technologies Ltd.
  1207. O'Reilly Institute
  1208. Westland Row
  1209. Dublin 2
  1210. Ireland
  1211.  
  1212. "ORB, CORBA compliant.
  1213. Product launched June, 93 at the OMG Object World.
  1214. Now shipping.  Provides C++ support (gives distributed
  1215. C++ programming using CORBA);  C++-IDL binding was jointly submitted with
  1216. SunSoft/HP to OMG recent call. "
  1217. etc etc
  1218.  
  1219. Chris Horn,                                        tel: +353-1-6790677
  1220. Iona Technologies,                                 fax: +353-1-6798039
  1221. O'Reilly Institute,                                email: horn@iona.ie
  1222. Westland Row
  1223. IRL - Dublin 2
  1224.  
  1225.  
  1226. 3.8.7  Books, Articles, And Literature
  1227. --------------------------------------
  1228.  
  1229. This section is expected to grow considerably in the future.
  1230.  
  1231. "Distributed Object Computing With CORBA", C++ Report, July/August 1993
  1232.  
  1233. The Object Database Standard: ODMG-93
  1234. edited by: R.G.G. Cattell
  1235. published by Morgan Kaufmann Publishers, San Mateo, California
  1236. [Covers CORBA standards with respect to OODBs]
  1237.  
  1238.  
  1239. 3.9)  Why Is Garbage Collection a Good Thing?
  1240. ---------------------------------------------
  1241.  
  1242.   From: Paul Johnson (paj@gec-mrc.co.uk)
  1243.  
  1244. Garbage collection (GC) is a facility in the run-time system associated with a
  1245. language which will automatically reclaim objects which are no longer used.
  1246. OO Languages which require garbage collection include Eiffel, Smalltalk and
  1247. CLOS.  C and C++ can have garbage collection retrofitted (see [3] below).
  1248. [Ada has switchable GC, too -bob]
  1249.  
  1250. Without GC programmers must explicitly deallocate dynamic storage when
  1251. it is no longer needed (in C this is done by a call to free(3)).
  1252. There are a number of problems with this:
  1253.  
  1254. 1: Bugs due to errors in storage deallocation are very hard to find,
  1255.    although products are available which can help.
  1256.  
  1257. 2: In some circumstances the decision about whether to deallocate
  1258.    storage cannot be made by the programmer.  Drawing editors and
  1259.    interpreters often suffer from this.  The usual result is that the
  1260.    programmer has to write an application-specific garbage collector.
  1261.  
  1262. 3: An object which is responsible for deallocating storage must be
  1263.    certain that no other object still needs that storage.  Thus many
  1264.    modules must co-operate closely.  This leads to a tight binding
  1265.    between supposedly independent modules.
  1266.  
  1267. 4: Libraries with different deallocation strategies are often
  1268.    incompatible, hindering reuse.
  1269.  
  1270. 5: In order to avoid problems 3 and 4, programmers may end up copying
  1271.    and comparing whole objects rather than just references.  This is a
  1272.    particular problem with temporary values produced by C++ overloaded
  1273.    operators.
  1274.  
  1275. 6: Because keeping track of storage is extra work, programmers often
  1276.    resort to statically allocated arrays.  This in turn leads to
  1277.    arbitrary restrictions on input data which can cause failure when
  1278.    the assumptions behind the chosen limits no longer apply.  For
  1279.    instance many C compilers limit expression nesting, identifier
  1280.    length, include file nesting and macro stack depth.  This causes
  1281.    problems for programs that generate C.
  1282.  
  1283. One partial solution to a lack of GC is reference counting.  In this
  1284. scheme each object keeps a count of references to it.  When this count
  1285. drops to zero the object is automatically deallocated.  However this
  1286. is inefficient (swapping two references will result in three
  1287. decrements, three increments and six comparisons) and cannot reclaim
  1288. circular data structures.  Two systems that use a reference count GC
  1289. are the Interviews C++ graphics library and the Unix file system (the
  1290. link count).
  1291.  
  1292. Opponents of GC reply that it introduces an overhead which is
  1293. unacceptable in some applications.  However the overhead of manual
  1294. storage deallocation is probably as high as GC.  GC algorithms are
  1295. also available with good real-time behaviour.
  1296.  
  1297. [Further, GC can perform compaction improving locality of reference.]
  1298.  
  1299. Further Reading:
  1300.  
  1301. [1] "Object-Oriented Software Construction" by Meyer puts the argument
  1302. for GC.
  1303.  
  1304. [2] "Uniprocessor Garbage Collection Techniques," by Paul R. Wilson,
  1305. in Memory Management (proceedings of 1992 Int'l Workshop on Memory 
  1306. Management, Sept. 1992, St. Malo, France, Yves Bekkers and Jacques Cohen, 
  1307. eds.), Springer Verlag Lecture Notes in Computer Science #637.
  1308.  
  1309. This is an excellent summary of the state of the art in GC algorithms.  This
  1310. and other papers about garbage collection are available in PostScript via
  1311. anonymous ftp (cs.utexas.edu:pub/garbage/gcsurvey.ps.  [See APPENDIX E]
  1312.  
  1313. [3] "Garbage Collection in an Uncooperative Environment" by Boehm and
  1314. Weiser.  Software --- Practise and Experience vol 18(9), pp 807-820.
  1315. Sept 1988.  This describes GC in C and C++.
  1316.  
  1317. 3.10)  What Can I Do To Teach OO To The Kids?
  1318. ---------------------------------------------
  1319.  
  1320. Smalltalk (in its original 1972 version) was initially intended to make
  1321. computer programming easy enough for children.  The idea was that manipulating
  1322. objects was something more intuitive and natural than coding procedures.
  1323.  
  1324. Other entries or suggestions are welcome, please send to the author of the FAQ.
  1325.